分享 推播通知
目前身份: 訪客

什麼叫Model同步呀?這個設計的概念是這樣的。以往,我們通常都是先有了資料庫,然後創建資料表,在資料表中加入欄位,定義好欄位名稱、欄位型態等等,然後去寫code。

 

當寫code到一定階段,發現資料表還是有其它欄位要再加進去,這時我們就要再去資料表新增、修改、刪除欄位,然後再進行寫code。

 

Model同步的概念就是,能不能我在編輯好這個定義後,就直接更新我的資料表的狀態,比如少一個欄位,它就自動幫我同步到資料表,新增一個欄位。它的概念就是這樣。

 

具體使用方法有3個範例

1、User.sync() - 如果資料表不存在,就建立資料表(如果已存在,就不做任何事)

2、User.sync({ force: true }) - 如果資料表已存在,就先刪除,然後再鍵立新的資料表

3、User.sync({ alter: true }) - 會先檢查資料表的狀態、資料型態等,然後再進行做同步的效果

 

 範例

await User.sync({ force: true });
console.log("建立了新的user資料表"); 

 

一次同步所有的Model

上面講的是針對一個資料表去做同步的動作,如果要一次對所有的資料表,做一次性的同步,要如何做呢?可以用sequelize.sync()

await sequelize.sync({ force: true });
console.log("所有的Model已完成同步"); 

 

看了上述的說明後,有經驗的人應該發現了,這個理念好是好,但是有風險性在,甚麼風險性呢?

誰能保證自己絕對不會打錯字呢?這種情況我遇到太多了,打錯一個字,你去執行這個sync,會不會把資料表的格式整個搞亂掉呀?搞亂掉怎麼辦?有做備份嗎?沒做備份不就得整個重來嗎?

為了一個酷旋的sync,導致資料表結構被破壞掉的風險增高,實在是沒有很必要。

 

所以像這種功能,我還是傾向盡量少用,甚至就不用。一個出錯就不能復原,這可是了不得的事情。當然你可以先備份好資料表,然後再去執行sync,研究到它絕對不會破壞掉你的資料表結構,那樣也是可以的。

 

 

 

 

人氣 2357
學習 發表在 留言 (0) 人氣 (2357)
第02章 Model基礎
分享給朋友
網址

想對外分享這則貼文嗎?運用網址更方便呦~

載入中...